{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "af0d1eab",
   "metadata": {},
   "source": [
    "## Diving into pandas index types"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "a1c6fc93",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from IPython.display import display"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6ae47146",
   "metadata": {},
   "source": [
    "Creates an index with integers from 0 to 9 and displays it"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "245ca0fc",
   "metadata": {},
   "outputs": [],
   "source": [
    "idx_1 = pd.Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2f6a33e5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype='int64')"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(idx_1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ad6abd56",
   "metadata": {},
   "source": [
    "Generates a date range with daily frequency starting from 2016-01-01 for 6 periods and displays it"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "36a3391f",
   "metadata": {},
   "outputs": [],
   "source": [
    "days = pd.date_range(\"2016-01-01\", periods=6, freq=\"D\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "75dac768",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2016-01-01', '2016-01-02', '2016-01-03', '2016-01-04',\n",
       "               '2016-01-05', '2016-01-06'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(days)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c59e6b1a",
   "metadata": {},
   "source": [
    "Generates a date range with second frequency starting from 2016-01-01 for 100 periods and displays it"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "20e59bd5",
   "metadata": {},
   "outputs": [],
   "source": [
    "seconds = pd.date_range(\"2016-01-01\", periods=100, freq=\"s\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c087aacb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2016-01-01 00:00:00', '2016-01-01 00:00:01',\n",
       "               '2016-01-01 00:00:02', '2016-01-01 00:00:03',\n",
       "               '2016-01-01 00:00:04', '2016-01-01 00:00:05',\n",
       "               '2016-01-01 00:00:06', '2016-01-01 00:00:07',\n",
       "               '2016-01-01 00:00:08', '2016-01-01 00:00:09',\n",
       "               '2016-01-01 00:00:10', '2016-01-01 00:00:11',\n",
       "               '2016-01-01 00:00:12', '2016-01-01 00:00:13',\n",
       "               '2016-01-01 00:00:14', '2016-01-01 00:00:15',\n",
       "               '2016-01-01 00:00:16', '2016-01-01 00:00:17',\n",
       "               '2016-01-01 00:00:18', '2016-01-01 00:00:19',\n",
       "               '2016-01-01 00:00:20', '2016-01-01 00:00:21',\n",
       "               '2016-01-01 00:00:22', '2016-01-01 00:00:23',\n",
       "               '2016-01-01 00:00:24', '2016-01-01 00:00:25',\n",
       "               '2016-01-01 00:00:26', '2016-01-01 00:00:27',\n",
       "               '2016-01-01 00:00:28', '2016-01-01 00:00:29',\n",
       "               '2016-01-01 00:00:30', '2016-01-01 00:00:31',\n",
       "               '2016-01-01 00:00:32', '2016-01-01 00:00:33',\n",
       "               '2016-01-01 00:00:34', '2016-01-01 00:00:35',\n",
       "               '2016-01-01 00:00:36', '2016-01-01 00:00:37',\n",
       "               '2016-01-01 00:00:38', '2016-01-01 00:00:39',\n",
       "               '2016-01-01 00:00:40', '2016-01-01 00:00:41',\n",
       "               '2016-01-01 00:00:42', '2016-01-01 00:00:43',\n",
       "               '2016-01-01 00:00:44', '2016-01-01 00:00:45',\n",
       "               '2016-01-01 00:00:46', '2016-01-01 00:00:47',\n",
       "               '2016-01-01 00:00:48', '2016-01-01 00:00:49',\n",
       "               '2016-01-01 00:00:50', '2016-01-01 00:00:51',\n",
       "               '2016-01-01 00:00:52', '2016-01-01 00:00:53',\n",
       "               '2016-01-01 00:00:54', '2016-01-01 00:00:55',\n",
       "               '2016-01-01 00:00:56', '2016-01-01 00:00:57',\n",
       "               '2016-01-01 00:00:58', '2016-01-01 00:00:59',\n",
       "               '2016-01-01 00:01:00', '2016-01-01 00:01:01',\n",
       "               '2016-01-01 00:01:02', '2016-01-01 00:01:03',\n",
       "               '2016-01-01 00:01:04', '2016-01-01 00:01:05',\n",
       "               '2016-01-01 00:01:06', '2016-01-01 00:01:07',\n",
       "               '2016-01-01 00:01:08', '2016-01-01 00:01:09',\n",
       "               '2016-01-01 00:01:10', '2016-01-01 00:01:11',\n",
       "               '2016-01-01 00:01:12', '2016-01-01 00:01:13',\n",
       "               '2016-01-01 00:01:14', '2016-01-01 00:01:15',\n",
       "               '2016-01-01 00:01:16', '2016-01-01 00:01:17',\n",
       "               '2016-01-01 00:01:18', '2016-01-01 00:01:19',\n",
       "               '2016-01-01 00:01:20', '2016-01-01 00:01:21',\n",
       "               '2016-01-01 00:01:22', '2016-01-01 00:01:23',\n",
       "               '2016-01-01 00:01:24', '2016-01-01 00:01:25',\n",
       "               '2016-01-01 00:01:26', '2016-01-01 00:01:27',\n",
       "               '2016-01-01 00:01:28', '2016-01-01 00:01:29',\n",
       "               '2016-01-01 00:01:30', '2016-01-01 00:01:31',\n",
       "               '2016-01-01 00:01:32', '2016-01-01 00:01:33',\n",
       "               '2016-01-01 00:01:34', '2016-01-01 00:01:35',\n",
       "               '2016-01-01 00:01:36', '2016-01-01 00:01:37',\n",
       "               '2016-01-01 00:01:38', '2016-01-01 00:01:39'],\n",
       "              dtype='datetime64[ns]', freq='s')"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(seconds)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9de15c2",
   "metadata": {},
   "source": [
    "Localizes the seconds date range to UTC timezone and displays it"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "82672f68",
   "metadata": {},
   "outputs": [],
   "source": [
    "seconds_utc = seconds.tz_localize(\"UTC\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "0614994a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2016-01-01 00:00:00+00:00', '2016-01-01 00:00:01+00:00',\n",
       "               '2016-01-01 00:00:02+00:00', '2016-01-01 00:00:03+00:00',\n",
       "               '2016-01-01 00:00:04+00:00', '2016-01-01 00:00:05+00:00',\n",
       "               '2016-01-01 00:00:06+00:00', '2016-01-01 00:00:07+00:00',\n",
       "               '2016-01-01 00:00:08+00:00', '2016-01-01 00:00:09+00:00',\n",
       "               '2016-01-01 00:00:10+00:00', '2016-01-01 00:00:11+00:00',\n",
       "               '2016-01-01 00:00:12+00:00', '2016-01-01 00:00:13+00:00',\n",
       "               '2016-01-01 00:00:14+00:00', '2016-01-01 00:00:15+00:00',\n",
       "               '2016-01-01 00:00:16+00:00', '2016-01-01 00:00:17+00:00',\n",
       "               '2016-01-01 00:00:18+00:00', '2016-01-01 00:00:19+00:00',\n",
       "               '2016-01-01 00:00:20+00:00', '2016-01-01 00:00:21+00:00',\n",
       "               '2016-01-01 00:00:22+00:00', '2016-01-01 00:00:23+00:00',\n",
       "               '2016-01-01 00:00:24+00:00', '2016-01-01 00:00:25+00:00',\n",
       "               '2016-01-01 00:00:26+00:00', '2016-01-01 00:00:27+00:00',\n",
       "               '2016-01-01 00:00:28+00:00', '2016-01-01 00:00:29+00:00',\n",
       "               '2016-01-01 00:00:30+00:00', '2016-01-01 00:00:31+00:00',\n",
       "               '2016-01-01 00:00:32+00:00', '2016-01-01 00:00:33+00:00',\n",
       "               '2016-01-01 00:00:34+00:00', '2016-01-01 00:00:35+00:00',\n",
       "               '2016-01-01 00:00:36+00:00', '2016-01-01 00:00:37+00:00',\n",
       "               '2016-01-01 00:00:38+00:00', '2016-01-01 00:00:39+00:00',\n",
       "               '2016-01-01 00:00:40+00:00', '2016-01-01 00:00:41+00:00',\n",
       "               '2016-01-01 00:00:42+00:00', '2016-01-01 00:00:43+00:00',\n",
       "               '2016-01-01 00:00:44+00:00', '2016-01-01 00:00:45+00:00',\n",
       "               '2016-01-01 00:00:46+00:00', '2016-01-01 00:00:47+00:00',\n",
       "               '2016-01-01 00:00:48+00:00', '2016-01-01 00:00:49+00:00',\n",
       "               '2016-01-01 00:00:50+00:00', '2016-01-01 00:00:51+00:00',\n",
       "               '2016-01-01 00:00:52+00:00', '2016-01-01 00:00:53+00:00',\n",
       "               '2016-01-01 00:00:54+00:00', '2016-01-01 00:00:55+00:00',\n",
       "               '2016-01-01 00:00:56+00:00', '2016-01-01 00:00:57+00:00',\n",
       "               '2016-01-01 00:00:58+00:00', '2016-01-01 00:00:59+00:00',\n",
       "               '2016-01-01 00:01:00+00:00', '2016-01-01 00:01:01+00:00',\n",
       "               '2016-01-01 00:01:02+00:00', '2016-01-01 00:01:03+00:00',\n",
       "               '2016-01-01 00:01:04+00:00', '2016-01-01 00:01:05+00:00',\n",
       "               '2016-01-01 00:01:06+00:00', '2016-01-01 00:01:07+00:00',\n",
       "               '2016-01-01 00:01:08+00:00', '2016-01-01 00:01:09+00:00',\n",
       "               '2016-01-01 00:01:10+00:00', '2016-01-01 00:01:11+00:00',\n",
       "               '2016-01-01 00:01:12+00:00', '2016-01-01 00:01:13+00:00',\n",
       "               '2016-01-01 00:01:14+00:00', '2016-01-01 00:01:15+00:00',\n",
       "               '2016-01-01 00:01:16+00:00', '2016-01-01 00:01:17+00:00',\n",
       "               '2016-01-01 00:01:18+00:00', '2016-01-01 00:01:19+00:00',\n",
       "               '2016-01-01 00:01:20+00:00', '2016-01-01 00:01:21+00:00',\n",
       "               '2016-01-01 00:01:22+00:00', '2016-01-01 00:01:23+00:00',\n",
       "               '2016-01-01 00:01:24+00:00', '2016-01-01 00:01:25+00:00',\n",
       "               '2016-01-01 00:01:26+00:00', '2016-01-01 00:01:27+00:00',\n",
       "               '2016-01-01 00:01:28+00:00', '2016-01-01 00:01:29+00:00',\n",
       "               '2016-01-01 00:01:30+00:00', '2016-01-01 00:01:31+00:00',\n",
       "               '2016-01-01 00:01:32+00:00', '2016-01-01 00:01:33+00:00',\n",
       "               '2016-01-01 00:01:34+00:00', '2016-01-01 00:01:35+00:00',\n",
       "               '2016-01-01 00:01:36+00:00', '2016-01-01 00:01:37+00:00',\n",
       "               '2016-01-01 00:01:38+00:00', '2016-01-01 00:01:39+00:00'],\n",
       "              dtype='datetime64[ns, UTC]', freq='s')"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(seconds_utc)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2d2dce44",
   "metadata": {},
   "source": [
    "Converts the UTC localized date range to US/Eastern timezone and displays it"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "2455b6c2",
   "metadata": {},
   "outputs": [],
   "source": [
    "seconds_est = seconds_utc.tz_convert(\"US/Eastern\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "a2c4fb91",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2015-12-31 19:00:00-05:00', '2015-12-31 19:00:01-05:00',\n",
       "               '2015-12-31 19:00:02-05:00', '2015-12-31 19:00:03-05:00',\n",
       "               '2015-12-31 19:00:04-05:00', '2015-12-31 19:00:05-05:00',\n",
       "               '2015-12-31 19:00:06-05:00', '2015-12-31 19:00:07-05:00',\n",
       "               '2015-12-31 19:00:08-05:00', '2015-12-31 19:00:09-05:00',\n",
       "               '2015-12-31 19:00:10-05:00', '2015-12-31 19:00:11-05:00',\n",
       "               '2015-12-31 19:00:12-05:00', '2015-12-31 19:00:13-05:00',\n",
       "               '2015-12-31 19:00:14-05:00', '2015-12-31 19:00:15-05:00',\n",
       "               '2015-12-31 19:00:16-05:00', '2015-12-31 19:00:17-05:00',\n",
       "               '2015-12-31 19:00:18-05:00', '2015-12-31 19:00:19-05:00',\n",
       "               '2015-12-31 19:00:20-05:00', '2015-12-31 19:00:21-05:00',\n",
       "               '2015-12-31 19:00:22-05:00', '2015-12-31 19:00:23-05:00',\n",
       "               '2015-12-31 19:00:24-05:00', '2015-12-31 19:00:25-05:00',\n",
       "               '2015-12-31 19:00:26-05:00', '2015-12-31 19:00:27-05:00',\n",
       "               '2015-12-31 19:00:28-05:00', '2015-12-31 19:00:29-05:00',\n",
       "               '2015-12-31 19:00:30-05:00', '2015-12-31 19:00:31-05:00',\n",
       "               '2015-12-31 19:00:32-05:00', '2015-12-31 19:00:33-05:00',\n",
       "               '2015-12-31 19:00:34-05:00', '2015-12-31 19:00:35-05:00',\n",
       "               '2015-12-31 19:00:36-05:00', '2015-12-31 19:00:37-05:00',\n",
       "               '2015-12-31 19:00:38-05:00', '2015-12-31 19:00:39-05:00',\n",
       "               '2015-12-31 19:00:40-05:00', '2015-12-31 19:00:41-05:00',\n",
       "               '2015-12-31 19:00:42-05:00', '2015-12-31 19:00:43-05:00',\n",
       "               '2015-12-31 19:00:44-05:00', '2015-12-31 19:00:45-05:00',\n",
       "               '2015-12-31 19:00:46-05:00', '2015-12-31 19:00:47-05:00',\n",
       "               '2015-12-31 19:00:48-05:00', '2015-12-31 19:00:49-05:00',\n",
       "               '2015-12-31 19:00:50-05:00', '2015-12-31 19:00:51-05:00',\n",
       "               '2015-12-31 19:00:52-05:00', '2015-12-31 19:00:53-05:00',\n",
       "               '2015-12-31 19:00:54-05:00', '2015-12-31 19:00:55-05:00',\n",
       "               '2015-12-31 19:00:56-05:00', '2015-12-31 19:00:57-05:00',\n",
       "               '2015-12-31 19:00:58-05:00', '2015-12-31 19:00:59-05:00',\n",
       "               '2015-12-31 19:01:00-05:00', '2015-12-31 19:01:01-05:00',\n",
       "               '2015-12-31 19:01:02-05:00', '2015-12-31 19:01:03-05:00',\n",
       "               '2015-12-31 19:01:04-05:00', '2015-12-31 19:01:05-05:00',\n",
       "               '2015-12-31 19:01:06-05:00', '2015-12-31 19:01:07-05:00',\n",
       "               '2015-12-31 19:01:08-05:00', '2015-12-31 19:01:09-05:00',\n",
       "               '2015-12-31 19:01:10-05:00', '2015-12-31 19:01:11-05:00',\n",
       "               '2015-12-31 19:01:12-05:00', '2015-12-31 19:01:13-05:00',\n",
       "               '2015-12-31 19:01:14-05:00', '2015-12-31 19:01:15-05:00',\n",
       "               '2015-12-31 19:01:16-05:00', '2015-12-31 19:01:17-05:00',\n",
       "               '2015-12-31 19:01:18-05:00', '2015-12-31 19:01:19-05:00',\n",
       "               '2015-12-31 19:01:20-05:00', '2015-12-31 19:01:21-05:00',\n",
       "               '2015-12-31 19:01:22-05:00', '2015-12-31 19:01:23-05:00',\n",
       "               '2015-12-31 19:01:24-05:00', '2015-12-31 19:01:25-05:00',\n",
       "               '2015-12-31 19:01:26-05:00', '2015-12-31 19:01:27-05:00',\n",
       "               '2015-12-31 19:01:28-05:00', '2015-12-31 19:01:29-05:00',\n",
       "               '2015-12-31 19:01:30-05:00', '2015-12-31 19:01:31-05:00',\n",
       "               '2015-12-31 19:01:32-05:00', '2015-12-31 19:01:33-05:00',\n",
       "               '2015-12-31 19:01:34-05:00', '2015-12-31 19:01:35-05:00',\n",
       "               '2015-12-31 19:01:36-05:00', '2015-12-31 19:01:37-05:00',\n",
       "               '2015-12-31 19:01:38-05:00', '2015-12-31 19:01:39-05:00'],\n",
       "              dtype='datetime64[ns, US/Eastern]', freq='s')"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(seconds_est)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "18bda7ca",
   "metadata": {},
   "source": [
    "Generates a period range with quarterly frequency ending in November from 1990Q1 to 2000Q4 and displays it"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "b5817b31",
   "metadata": {},
   "outputs": [],
   "source": [
    "prng = pd.period_range(\"1990Q1\", \"2000Q4\", freq=\"Q-NOV\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "30bfb931",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['1990Q1', '1990Q2', '1990Q3', '1990Q4', '1991Q1', '1991Q2',\n",
       "             '1991Q3', '1991Q4', '1992Q1', '1992Q2', '1992Q3', '1992Q4',\n",
       "             '1993Q1', '1993Q2', '1993Q3', '1993Q4', '1994Q1', '1994Q2',\n",
       "             '1994Q3', '1994Q4', '1995Q1', '1995Q2', '1995Q3', '1995Q4',\n",
       "             '1996Q1', '1996Q2', '1996Q3', '1996Q4', '1997Q1', '1997Q2',\n",
       "             '1997Q3', '1997Q4', '1998Q1', '1998Q2', '1998Q3', '1998Q4',\n",
       "             '1999Q1', '1999Q2', '1999Q3', '1999Q4', '2000Q1', '2000Q2',\n",
       "             '2000Q3', '2000Q4'],\n",
       "            dtype='period[Q-NOV]')"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(prng)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "05afa22e",
   "metadata": {},
   "source": [
    "Creates a MultiIndex from a list of tuples with date and symbol, and displays it"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "89a74765",
   "metadata": {},
   "outputs": [],
   "source": [
    "tuples = [\n",
    "    (pd.Timestamp(\"2023-07-10\"), \"WMT\"),\n",
    "    (pd.Timestamp(\"2023-07-10\"), \"JPM\"),\n",
    "    (pd.Timestamp(\"2023-07-10\"), \"TGT\"),\n",
    "    (pd.Timestamp(\"2023-07-11\"), \"WMT\"),\n",
    "    (pd.Timestamp(\"2023-07-11\"), \"JPM\"),\n",
    "    (pd.Timestamp(\"2023-07-11\"), \"TGT\"),\n",
    "]\n",
    "midx = pd.MultiIndex.from_tuples(tuples, names=(\"date\", \"symbol\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "57c29aea",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MultiIndex([('2023-07-10', 'WMT'),\n",
       "            ('2023-07-10', 'JPM'),\n",
       "            ('2023-07-10', 'TGT'),\n",
       "            ('2023-07-11', 'WMT'),\n",
       "            ('2023-07-11', 'JPM'),\n",
       "            ('2023-07-11', 'TGT')],\n",
       "           names=['date', 'symbol'])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(midx)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "251eee3d",
   "metadata": {},
   "source": [
    "**Jason Strimpel** is the founder of <a href='https://pyquantnews.com/'>PyQuant News</a> and co-founder of <a href='https://www.tradeblotter.io/'>Trade Blotter</a>. His career in algorithmic trading spans 20+ years. He previously traded for a Chicago-based hedge fund, was a risk manager at JPMorgan, and managed production risk technology for an energy derivatives trading firm in London. In Singapore, he served as APAC CIO for an agricultural trading firm and built the data science team for a global metals trading firm. Jason holds degrees in Finance and Economics and a Master's in Quantitative Finance from the Illinois Institute of Technology. His career spans America, Europe, and Asia. He shares his expertise through the <a href='https://pyquantnews.com/subscribe-to-the-pyquant-newsletter/'>PyQuant Newsletter</a>, social media, and has taught over 1,000+ algorithmic trading with Python in his popular course **<a href='https://gettingstartedwithpythonforquantfinance.com/'>Getting Started With Python for Quant Finance</a>**. All code is for educational purposes only. Nothing provided here is financial advise. Use at your own risk."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d78dcbc2-a46b-4008-8f16-7cd7e2017689",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "jupytext": {
   "cell_metadata_filter": "-all",
   "main_language": "python",
   "notebook_metadata_filter": "-all"
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
